Repository navigation
Conversation
Accept atomic tracked-asset-lock writes with either full wallet restore or the narrower tracked-asset-lock restore capability. SQLite attests only the latter, matching its public load and manager hydration paths. Preserve the typed consumption report, nonterminal recovery marker, proof, and persistence failure behavior. Co-Authored-By: Codex GPT-6 <noreply@openai.com> <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Final review complete — no blockers (commit 055727f) · triage: low |
Make the existing tracked-lock capability cover persistence and nonterminal restart restore, and require only that contract plus atomic changesets for reconciliation. Admit the FFI bit only with persistence and paired restore callbacks. Fail Swift wallet restore if its tracked-lock fetch fails. Co-Authored-By: Codex <noreply@openai.com> <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub>
Require only atomic tracked-lock persistence for reconciliation of an already-loaded wallet. Preserve existing capability meanings and FFI host admission behavior, with wallet restore work outside this change. Keep regression coverage for SQLite reopen/hydration, typed consumption errors, and persistence failure handling. Co-Authored-By: Codex <noreply@openai.com> <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub>
…et-lock-reconciliation
…et-lock-reconciliation
Take the base's CHANGELOG.md: the base dropped its hand-written Unreleased section, so the entry for this change comes from the PR title at release. <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pick up the storage fixes from the base (cached replay queries, mempool claimant provenance, replay amount guard, recovery fixtures). <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bring in the base branch at d280e72: rust-dashcore pinned to the reworked dashpay/rust-dashcore#1112 (844da0e8), the dev-based pin and Platform adaptations from the dependency PR, and v5.1-dev. <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSi8cX229kW2fmLxKW6ir4
thepastaclaw
left a comment
There was a problem hiding this comment.
Final validation — Phase 1 + Phase 2
Verified the complete diff at b30a09e against the supplied PR base and traced capability admission, reconciliation, and SQLite hydration; no in-scope defects were confirmed. The narrower mask matches the atomic tracked-lock writes performed on an already-loaded record without changing capability-bit meanings, FFI layouts, proof handling, or persistence-failure behavior. Validation was static only: the supplied CI snapshot shows successful Kotlin SDK build/tests and policy checks, but does not independently establish the author's reported targeted Rust test results.
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: rust-quality); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 7: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)
- Triage:
lowbygpt-6.1-sol(effort low) — The diff makes a small, contained capability-mask relaxation in ASSET_LOCK_RECONCILIATION, with supporting documentation and regression tests rather than intricate changes to funding or recovery logic. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer,glm-5.3-flash— rust-quality (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 100% left, weekly 85% left; passed overgemini-3.8-flash-high(antigravity below 15% reserve: weekly 14% left, 5h 100% left) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— architecture-layering (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— ffi-engineer (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— platform-versioning (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— rust-quality (completed, effort medium); agentphase2-reviewer
Brings in the sweep-claimant and unsafe-mempool-record repairs from the base branch (f49527f). <sub>🤖 Co-authored by [Claudius the Magnificent](https://github.com/lklimek/claudius) AI Agent</sub> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSi8cX229kW2fmLxKW6ir4
thepastaclaw
left a comment
There was a problem hiding this comment.
Re-review — Final validation — Phase 1 + Phase 2
Verified the complete diff at head 055727f and found no actionable in-scope defects. The narrower reconciliation mask preserves existing capability semantics and FFI admission behavior, with regression coverage for minimal callback admission, typed consumption errors, and SQLite reopen/manager hydration. Validation was static only; the supplied CI snapshot reports successful Rust workspace, wallet, and Swift checks, with browser shard 1 and Kotlin SDK checks still pending.
🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: rust-quality); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 7: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); reviewer 8: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 9: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 10: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 11: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 12: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)
- Triage:
lowbygpt-6.1-sol(effort low) — The diff makes a small, contained capability-mask correction in ASSET_LOCK_RECONCILIATION with focused regression tests, without changing funding, proof verification, or reconciliation algorithms. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer,glm-5.3-flash— rust-quality (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 93% left, weekly 99% left; passed overgemini-3.8-flash-high(antigravity below 15% reserve: weekly 14% left, 5h 100% left) - Fresh final gate: an independent Phase-2 review ran after iterative findings were reconciled
- Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— architecture-layering (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— ffi-engineer (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— platform-versioning (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— rust-quality (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— architecture-layering (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— ffi-engineer (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— platform-versioning (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— rust-quality (completed, effort medium); agentphase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.
No unresolved findings remain from the prior review on this head.
TL;DR
When a saved funding deposit is reported as already used, retain its recovery state and return the specific result instead of failing on an unrelated storage requirement.
User story
As a wallet user, I can understand why a saved deposit cannot fund another payment and check the earlier payment or choose another deposit.
Scenario
Choose Fund for a restored deposit that the network reports as already used. The recovery step updates the loaded deposit and saves that update atomically. It must not fail merely because the storage backend cannot restore unrelated wallet data.
Detailed discussion
Issue being fixed or feature implemented
Stacked on #5150 (
fix/pr-5126). Integrated in dashpay/dash-evo-tool#1036. SQLite restores tracked asset locks but does not declare the broaderWALLET_RESTOREcapability. Asset-lock reconciliation previously required that capability despite operating on an already-loaded record.What was done?
ATOMIC_CHANGESETS | TRACKED_ASSET_LOCKSfor asset-lock reconciliation, changing the operation mask from0x281to0x201.WALLET_RESTORE; full Core wallet restoration is implemented separately in stacked feat(wallet-storage)!: restore complete Core wallet snapshots from SQLite #5210, reusing fix(platform-wallet-storage)!: harden wallet history restore after #5150 review #5208.Compatibility
No callback layout, capability version, or Swift/iOS integration changes. Backends need atomic writes and tracked asset-lock persistence for this operation.
How Has This Been Tested?
--no-deps -D warnings, and diff checks passed.Breaking Changes
None.
Checklist
🤖 Co-authored by Claudius the Magnificent AI Agent